/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package tela;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import pessoal.Demanda;
import pessoal.Usuario;

/**
 *
 * @author Lauro
 */
public class AtualizacaoDemanda extends HttpServlet {

    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            Usuario u = (Usuario) request.getSession().getAttribute("usuario");
            if (u != null) {
                int idDemanda1 = 0;
                int idDemanda2 = 0;

                List<Demanda> demandas = new ArrayList<Demanda>();

                if (request.getParameter("demanda1") != null) { // já possuía demanda 1
                    idDemanda1 = Integer.parseInt(request.getParameter("demanda1"));
                }
                if (request.getParameter("demanda2") != null) { // já possuía demanda 2
                    idDemanda2 = Integer.parseInt(request.getParameter("demanda2"));
                }

                int polo = Integer.parseInt(request.getParameter("polo"));

                if (polo != 0) {

                    if (request.getParameter("nivel1") != null && request.getParameter("curso1") != null) {
                        int nivel1 = Integer.parseInt(request.getParameter("nivel1"));
                        int curso1 = Integer.parseInt(request.getParameter("curso1"));
                        if (nivel1 != 0 && curso1 != 0) {
                            int modalidade1 = Integer.parseInt(request.getParameter("modalidade1"));
                            int cidade1 = u.getEndereco().getCidadeId();
                            int estado1 = u.getEndereco().getEstadoId();
                            Calendar cal = Calendar.getInstance();
                            int ano = cal.get(Calendar.YEAR) + 1;
                            if (cal.get(Calendar.YEAR) <= 2013 && (cal.get(Calendar.YEAR) == 2013 ? cal.get(Calendar.MONTH) <= Calendar.MARCH : true)) {
                                ano = 2013;
                            }
                            boolean professorPublico = request.getParameter("professor_publico") != null ? true : false;
                            Demanda demanda1 = new Demanda(idDemanda1,
                                    u.getCpf(),
                                    nivel1,
                                    curso1,
                                    modalidade1,
                                    cidade1,
                                    estado1,
                                    polo,
                                    professorPublico,
                                    ano,
                                    cal.getTime());
                            demandas.add(demanda1);
                        }
                    } else {
                        out.println("Ocorreu um erro! Por favor, tente novamente mais tarde.");
                        out.println("<script>window.alert('Ocorreu um erro! Por favor, tente novamente mais tarde.');</script>");
                        out.println("<script>document.location.href='index.jsp?conteudo=inscricoes#aba4';</script>");
                    }

                    if (request.getParameter("nivel2") != null && request.getParameter("curso2") != null) {
                        int nivel2 = Integer.parseInt(request.getParameter("nivel2"));
                        int curso2 = Integer.parseInt(request.getParameter("curso2"));
                        if (nivel2 != 0 && curso2 != 0) {
                            int modalidade2 = Integer.parseInt(request.getParameter("modalidade2"));
                            int cidade2 = u.getEndereco().getCidadeId();
                            int estado2 = u.getEndereco().getEstadoId();
                            Calendar cal = Calendar.getInstance();
                            int ano = cal.get(Calendar.YEAR) + 1;
                            if (cal.get(Calendar.YEAR) <= 2013 && (cal.get(Calendar.YEAR) == 2013 ? cal.get(Calendar.MONTH) <= Calendar.MARCH : true)) {
                                ano = 2013;
                            }
                            boolean professorPublico = request.getParameter("professor_publico") != null ? true : false;
                            Demanda demanda2 = new Demanda(idDemanda2,
                                    u.getCpf(),
                                    nivel2,
                                    curso2,
                                    modalidade2,
                                    cidade2,
                                    estado2,
                                    polo,
                                    professorPublico,
                                    ano,
                                    cal.getTime());
                            demandas.add(demanda2);
                        }
                    } else {
                        out.println("Ocorreu um erro! Por favor, tente novamente mais tarde.");
                        out.println("<script>window.alert('Ocorreu um erro! Por favor, tente novamente mais tarde.');</script>");
                        out.println("<script>document.location.href='index.jsp?conteudo=inscricoes#aba4';</script>");
                    }

                    u.atualizarDemandas(demandas);

                    out.println("Demanda(s) atualizadas com sucesso!");
                    out.println("<script>window.alert('Demanda(s) atualizadas com sucesso!');</script>");
                    out.println("<script>document.location.href='index.jsp?conteudo=inscricoes#aba4';</script>");
                } else {
                    out.println("Ocorreu um erro! Por favor, tente novamente mais tarde.");
                    out.println("<script>window.alert('Ocorreu um erro! Por favor, tente novamente mais tarde.');</script>");
                    out.println("<script>document.location.href='index.jsp?conteudo=inscricoes#aba4';</script>");
                }
            } else {
                out.println("Você precisa estar logado para efetuar essa operação!!");
                out.println("<script>window.alert('Você precisa estar logado para efetuar essa operação!');</script>");
                out.println("<script>document.location.href='index.jsp?conteudo=inscricoes#aba4';</script>");
            }
        } catch (SQLException ex) {
            Logger.getLogger(AtualizacaoDemanda.class.getName()).log(Level.SEVERE, null, ex);
            out.println("Ocorreu um erro! Por favor, tente novamente mais tarde.");
            out.println("<script>window.alert('Ocorreu um erro! Por favor, tente novamente mais tarde.');</script>");
            out.println("<script>document.location.href='index.jsp?conteudo=inscricoes#aba4';</script>");
        } finally {
            out.close();
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP
     * <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP
     * <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}
